
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>2、Tomcat配置文件详解 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>2、Tomcat配置文件详解 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">Tomcat 的主要配置文件 server.xml 的核心作用是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">server.xml 是 Tomcat 服务器的主要配置文件，它定义了 Tomcat 服务器的整体结构和行为，包括配置服务器、服务、连接器、虚拟主机和上下文等多个组件。</div>
          </div>
          <div class="card-source">来源: server.xml</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在 server.xml 文件中，`<Server>`, `<Service>`, `<Connector>`, `<Engine>`, 和 `<Host>` 这些核心元素之间是什么样的层级关系？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">顶层是 `<Server>` 元素，代表整个 Tomcat 实例。一个 `<Server>` 可以包含多个 `<Service>`。每个 `<Service>` 通常包含一个 `<Engine>` 和一个或多个 `<Connector>`。而 `<Engine>` 则可以包含多个 `<Host>`（虚拟主机）。</div>
          </div>
          <div class="card-source">来源: server.xml</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">Tomcat `conf` 目录下的 `web.xml` 文件与单个 Web 应用 `WEB-INF` 目录下的 `web.xml` 有何不同？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">位于 `conf` 目录中的 `web.xml` 是所有 Web 应用程序共享的全局部署描述符，可以定义全局的 Servlet、过滤器等。而位于 Web 应用 `WEB-INF` 目录下的 `web.xml` 则是该特定应用的部署描述符。</div>
          </div>
          <div class="card-source">来源: 目录结构</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">Tomcat 的 `work` 目录是用来做什么的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">work 目录用于存放 Tomcat 运行时生成的工作文件，例如将 JSP 文件编译后生成的 Servlet 文件等。</div>
          </div>
          <div class="card-source">来源: 目录结构</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">在 Tomcat 中，`<Executor>` 元素的作用是什么？它如何与 `<Connector>` 组件关联使用？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`<Executor>` 元素代表一个可由其他组件共享的线程池。`<Connector>` 组件可以通过其 `executor` 属性指定要使用的 `<Executor>` 的名称，从而使用这个共享的线程池来处理请求。</div>
          </div>
          <div class="card-source">来源: 线程池Executor</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">修改 Tomcat 配置文件后，有哪些方法可以使修改生效？它们的主要区别是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主要有两种方法：1. 重启 Tomcat 服务器，这是最简单的方法，适用于所有配置更改。2. 热部署（Hot Deployment），它可以在不重启服务器的情况下重新加载应用程序，通常适用于 Web 应用程序的部署描述符（如 web.xml）的修改。但对于服务器核心配置（如 server.xml），仍需重启才能生效。</div>
          </div>
          <div class="card-source">来源: 配置文件的修改与重载</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">安全</div>
          <div class="card-question">文档中提到了哪些方法来防止配置文件中的敏感信息（如数据库密码）泄露？请列举至少三项。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">安全</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">1. 限制文件权限，只允许授权用户访问。2. 使用环境变量替代，避免将敏感信息硬编码在文件中。3. 加密敏感信息，即使文件泄露，信息也不会以明文形式暴露。其他方法还包括使用安全的存储服务、定期更新密码和审计监控。</div>
          </div>
          <div class="card-source">来源: 配置文件的安全性</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">为了提高系统稳定性和安全性，管理 Tomcat 配置文件时应遵循哪些最佳实践？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">最佳实践包括：定期备份配置文件、使用版本控制系统（如Git）来跟踪变更、避免直接修改生产环境配置、文档化重要的配置信息以及定期审查和优化配置。</div>
          </div>
          <div class="card-source">来源: 最佳实践</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">Java Web 应用程序的部署描述符 web.xml 主要有哪些作用？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">web.xml 的主要作用包括：配置 Servlet、过滤器和监听器；定义错误页面；配置会话管理器（如会话超时时间）；设置全局的上下文参数；以及配置欢迎页面、MIME 类型和安全约束等。</div>
          </div>
          <div class="card-source">来源: web.xml</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
